# -*- coding:utf-8 -*-

import datetime
from google.appengine.ext import db
from google.appengine.api import users


CHOICES_GENDER = (u'Эрэгтэй', u'Эмэгтэй')
CHOICES_PROFESSION = (u'Багш', u'Оюутан', u'Бусад')
CHOICES_LANGUAGE = (u'Монгол', u'Англи', u'Орос', u'Герман', u'Франц', u'Хятад', u'Япон', u'Солонгос', u'Бусад')
CHOICES_CURRENCY = (u'Төгрөг', u'Доллар', u'Евро')
CHOICES_CATEGORY = (u'Уран зохиол', u'Шинжлэх ухаан', u'Бусад')


class Account(db.Model):
    user = db.UserProperty(u'Хэрэглэгч', required = False)
    firstname = db.StringProperty(u'Нэр', required = False)
    lastname = db.StringProperty(u'Овог', required = False)
#    gender = db.StringProperty(u'Хүйс', required = True, choices = set([u"Эрэгтэй", u"Эмэгтэй"]))
    gender = db.StringProperty(u'Хүйс', required = False, choices = CHOICES_GENDER)
    birthdate = db.DateProperty(u'Төрсөн огноо', required = False)
    phone = db.PhoneNumberProperty(u'Утас')
    email = db.EmailProperty(u'И-мэйл')
    country = db.StringProperty(u'Улс', required = False)
    city = db.StringProperty(u'Хот', required = False)
    address = db.PostalAddressProperty(u'Хаяг')
    postal = db.PostalAddressProperty(u'Шуудан')
    profession = db.StringProperty(u'Мэргэжил', choices = CHOICES_PROFESSION)
    
class Author(db.Model):
    user = db.UserProperty(u'Хэрэглэгч', required = False)
#    password = db.StringProperty(u'Нууц үг', required = False)
#    biography = db.StringProperty(u'Намтар', required = True, multiline = True)
    biography = db.TextProperty(u'Намтар', required = False)
    photo = db.BlobProperty(u'Зураг')
    
class Book(db.Model):
    file = db.BlobProperty(u'Файл', required = False)
#    cover = db.BlobProperty(u'Номын нүүр')
    title = db.StringProperty(u'Сэдэв', required = False)
    author = db.ReferenceProperty(Author, verbose_name = u'Зохиолч', required = False, collection_name = 'authors')
    isbn = db.StringProperty(u'ISBN')
    language = db.StringProperty(u'Бичигдсэн хэл', required = False, default = 'Монгол',choices = CHOICES_LANGUAGE)
    content = db.StringProperty(u'Агуулга', required = False, multiline = True)
    year = db.StringProperty(u'Бичигдсэн он', required = False)
    price = db.FloatProperty(u'Үнэ', required = False)
    currency = db.StringProperty(u'Валют', required = False, default = 'Төгрөг', choices = CHOICES_CURRENCY)
    total_pages = db.IntegerProperty(u'Нийт хуудсын тоо', required = False)
    rating = db.RatingProperty(u'Үнэлгээ')
#    open_pages = db.ListProperty(int, u'Нээлттэй хуудсууд')
#    pages = db.ReferenceProperty(Page, verbose_name = u'Нээлттэй хуудас', collection_name = 'pages')
#    book_categories = db.ListProperty(db.Key)
    
class Comment(db.Model):
    account = db.ReferenceProperty(Account, verbose_name = u'Хэрэглэгч', required = True, collection_name = 'comment_accounts')
    book = db.ReferenceProperty(Book, verbose_name = u'Ном', required = True, collection_name = 'books')
    date = db.DateTimeProperty(u'Бичсэн огноо')
    comment = db.StringProperty(u'Санал сэтгэгдэл', multiline = True, required = True)
    
class Page(db.Model):
    page = db.IntegerProperty(u'Хуудасны дугаар')
    
class Category(db.Model):
    maincategory = db.StringProperty(u'Үндсэн төрөл', required = False, choices = CHOICES_CATEGORY)
    name = db.StringProperty(u'Номын төрөл', required = False)
    
class Profession(db.Model):
    ProfessionName = db.StringProperty(u'Мэргэжил', required = False)
    
#class BookCategory(db.Model):
#    book = db.ReferenceProperty(Book, verbose_name = u'Ном', required = True, collection_name = u'Номнууд')
#    category = db.ReferenceProperty(Category, verbose_name = u'Төрөл', required = True, collection_name = u'Төрлүүд')
    
class Order(db.Model):
    no = db.StringProperty(u'Дугаар', required = True)
    account = db.ReferenceProperty(Account, verbose_name = u'Хэрэглэгч', required = True, collection_name = 'order_accounts')
    date = db.DateTimeProperty(u'Огноо', required = True, auto_now_add = True)
    price_amount = db.FloatProperty(u'Нийт үнэ', required = True)
    books = db.ListProperty(db.Key)
    
#class BookOrder(db.Model):
#    book = db.ReferenceProperty(Book, verbose_name = u'Ном', required = True, collection_name = u'Номнууд')
#    order = db.ReferenceProperty(Order, verbose_name = u'Захиалга', required = True, collection_name = u'Захиалгууд')